package com.malou.client.ventas.direccioncliente;

import java.util.List;

import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ListLoader;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.malou.client.MalouConstants;
import com.malou.client.util.MensajeData;


public class DireccionClientes {
	private static DireccionClienteServiceAsync cs=GWT.create(DireccionClienteService.class);
	private static MalouConstants constants = GWT.create(MalouConstants.class);

	public static Integer cliente_id;
	
	public static ListLoader<ListLoadResult<ModelData>> loader;
	public static ListStore<BeanModel> store;
	
	public static DireccionClienteDialog direccionclienteDialog;
	

	public static void getDireccionCliente(){
		RpcProxy<List<DireccionCliente>> proxy = new RpcProxy<List<DireccionCliente>>() {

			@Override
			protected void load(Object loadConfig,AsyncCallback<List<DireccionCliente>> callback) {				
				cs.getDireccionCliente(cliente_id,callback);
			}		      
			
	    };
	    
	    loader=new BaseListLoader<ListLoadResult<ModelData>>(proxy, new BeanModelReader());
	    
	    store = new ListStore<BeanModel>(loader);
	}
	
	public static void save(DireccionCliente cl) {
	
		cl.setCliente_id(cliente_id);
		
		cs.save(cl, new AsyncCallback<MensajeData>() {

			@Override
			public void onFailure(Throwable caught) {				
				MessageBox.alert(constants.sistemaMarcocruzado(), constants.errorConexion(), null);	
				store.rejectChanges();
			}

			@Override
			public void onSuccess(MensajeData data) {
				if (data.guardado) {					
					direccionclienteDialog.hide();
					loader.load();
					
				}
				 else {

					 MessageBox.alert(constants.sistemaMarcocruzado(), constants.direccionNoGuardado(), null);
				}						
			}
			
		});
	}
	
	
	public static void delete(Integer id) {
		  
		  cs.delete(id, new AsyncCallback<MensajeData>() {

				@Override
				public void onFailure(Throwable caught) {					
					MessageBox.alert(constants.sistemaMarcocruzado(), constants.errorConexion(), null);					
				}

				@Override
				public void onSuccess(MensajeData data) {
					if (data.guardado) {					
						
						loader.load();						
					}
					 else {
							 
						 MessageBox.alert(constants.sistemaMarcocruzado(), constants.direccionNoEliminado(), null);
					}						
				}
				
			});
	  }
	
	public static void deleteAll(String ids) {
		  
		  cs.deleteAll(ids, new AsyncCallback<MensajeData>() {

				@Override
				public void onFailure(Throwable caught) {					
					MessageBox.alert(constants.sistemaMarcocruzado(), constants.errorConexion(), null);					
				}

				@Override
				public void onSuccess(MensajeData data) {
					if (data.guardado) {					
						
						loader.load();						
					}
					 else {
						 //clienteDialog.status.hide();
						 //clienteDialog.getButtonBar().enable();					 
						 MessageBox.alert(constants.sistemaMarcocruzado(), constants.direccionNoEliminados(), null);
					}						
				}
				
			});
	  }
	
	

	
}
